package com.tg.paw.common.config;

import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.tg.paw.common.generator.IdGeneratorUtil;
import org.springframework.stereotype.Component;

/**
 * ASSIGN_ID
 * 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),
 * 使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法
 * com.baomidou.mybatisplus.core.toolkit.Sequence
 * datacenterId： 网卡、mac地址
 * workerId： MAC + PID 的 hashcode 获取16个低位
 * )
 *
 * 自定义主键 mybatis-plus
 * 根据redis 生成 datacenterId workerId
 * @author Rubble
 * @date 2020/6/13
 */
@Component
public class MybatisPlusCustomIdGenerator implements IdentifierGenerator {
    @Override
    public Long nextId(Object entity) {
        //可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.
        String bizKey = entity.getClass().getName();
        //根据bizKey调用分布式ID生成
        long id = IdGeneratorUtil.nextId();
        //返回生成的id值即可.
        return id;
    }
}
